function SuperClass(name) {
	this.name = name
	this.books = ['JavaScript设计模式', '红宝书']
}

SuperClass.prototype.getName = function () {
	console.log(this.name)
}

function SubClass(name, time) {
	SuperClass.call(this, name)
	this.time = time
}

SubClass.prototype = new SuperClass()

SubClass.prototype.getTime = function () {
	console.log(this.time)
}

let s1 = new SubClass('组合继承', 2022)
s1.books.push('小黄书')
console.log('s1', s1)
console.log('book', s1.books)
s1.getTime()
s1.getName()

console.log('****************')
let s2 = new SubClass('继承666', 2021)
s1.books.push('小绿书')
console.log('s2', s2)
console.log('book2', s2.books)
s2.getTime()
s2.getName()

/**
 * 组合继承就是前面两种继承方法的综合使用，
 * 我们既在子类初始化时 在子类的环境中执行了父类的构造函数， 我们还能基于prototype 访问 父类原型上的方法
 * 初次之外我们还实现了子类继承父类时给父类构造函数进行传参
 *
 * 这也是一个非常不错的继承实现方式
 */
